package models

type Student struct {
	Id       int    `json:"id" gorm:"column:id"`
	Number   string `json:"number"  gorm:"column:number"`
	Password string `json:"password"  gorm:"column:password"`
	ClassId  int    `json:"classId"  gorm:"column:class_id"`
	Name     string `json:"name" gorm:"column:name"`
}

func (Student) TableName() string {
	return "student"
}

type StudentDto struct {
	Id         int      `json:"id" gorm:"column:id"`
	Number     string   `json:"number"  gorm:"column:number"`
	Password   string   `json:"password"  gorm:"column:password"`
	ClassId    int      `json:"classId"  gorm:"column:class_id"`
	Name       string   `json:"name" gorm:"column:name"`
	LessonList []Lesson `json:"lessonList" gorm:"many2many:lesson_student;foreignKey:Id;joinForeignKey:student_id;references:Id;joinReferences:lesson_id"`

	// 配置说明：
	// many2many:lesson_student: 中间的关联表
	// foreignKey:Id       : 主模型（StudentDto）的主键字段（对应数据库 student 表的 id）
	// joinForeignKey:student_id   : 中间表（lesson_student）中指向主模型的外键字段名
	// references:Id       : 关联模型（Lesson）的主键字段
	// joinReferences:lesson_id   : 中间表（lesson_student）中指向关联模型的外键字段名

}

func (StudentDto) TableName() string {
	return "student"
}
